Contact management and dialing using conditional flow logic

ABSTRACT

A tool for contacts management and automated calling. The tool displays, by one or more computer processors, a contact page for adding a contact, wherein the contact page includes at least one conditional flow statement field. The tool program prompts, by one more computer processors, to configure the at least one conditional flow statement field. The tool saves, by one or more computer processors, the contact based on the at least one control flow statement field. The tool initiates, by one or more computer processors, an automated call to the contact based, on the at least one conditional flow statement field. The tool applies, by one or more computer processors, the at least one conditional flow statement field to the automated call to the contact.

BACKGROUND OF THE INVENTION

The present invention relates generally to telecommunications, and moreparticularly to contact management and automated dialing on a mobiledevice.

Mobile devices allow users to store multiple numbers under a singlecontact name. For example, under a contact name “Home”, a user can savemultiple phone numbers for each family member living at home. Whenmaking a phone call to a phone number under the contact name “Home”, theuser has to scroll up and down through a contacts list, find the contactname “Home”, and then scroll up or down to select a desired phone numberstored under the contact name. In the case where the user calling thedesired phone number receives no answer, the user must again select asecond phone number to call stored under the contact name in order toreach someone in their family.

In another example, a user has various meetings which are repetitive ona daily basis at different times with different people, such as amanager, a team leader, and a partner team. In this case, the user wouldbe dialing to the same meeting number allotted by his company, but thepass code to join these various meetings will be different. Therefore,the user has to dial the meeting number and wait for the automated voicethat plays an audio message, such as “Please enter your pass codefollowed by # key now”. After listening to the message, the user mustenter the pass code for a particular meeting and announce a name.

In yet another example, a person wishes to invite fifty guests to hisbirthday celebration. The user creates a list of contacts to invite on asheet of paper, selects each contact from a contact list on a mobiledevice, and dials each contact one at a time, updating the list on thesheet of paper accordingly.

SUMMARY

Aspects of an embodiment of the present invention disclose a method,system, and computer program product for contacts management andautomated calling. The computer system includes program instructions todisplay a contact page for adding a contact, wherein the contact pageincludes at least one conditional flow statement field. The computersystem includes program instructions to provide: a field for enteringcontact information, a field for configuring conditional flow statementlogic, a field for configuring automated contacting utilizingconditional flow statement logic, and a field for configuring automatedshort message service (SMS) text messaging utilizing conditional flowstatement logic. The computer system includes program instructions toprompt to configure the at least one conditional flow statement field,wherein the at least one conditional flow statement field includes atleast one control statement and at least one logical operator, the atleast one control statement includes a decision-making statement, alooping statement, and a branching statement, and the at least onelogical operator includes a symbol representing conditional flow logic.Responsive to configuring the at least one conditional flow statementfield, the computer system includes program instructions to save thecontact page based on the at least one control flow statement field. Thecomputer system includes program instructions to determine the at leastone conditional flow statement field configured to the contact byreferencing a saved contact page for the contact. The computer systemincludes program instructions to apply the at least one conditional flowstatement field to the automated call to the contact. The computersystem includes program instructions to initiate an automated call tothe contact based, on the at least one conditional flow statement fieldconfigured to the contact, wherein initiating the automated callincludes providing a pause control to suspend the at least oneconditional flow statement field and pause the automated call.Responsive to the contact not answering the call, the computer systemincludes program instructions to determine the contact did not answerthe call, wherein determining the contact did not answer the call,further comprises repeating a call loop a pre-configured number oftimes, based, at least in part, on the at least one conditional flowstatement. The computer system includes program instructions todetermine whether the contact answered during any repeat calls duringthe call loop, wherein determining whether the contact answered duringany repeat calls during the call loop further comprises, responsive todetermining the contact did not answer during any repeat calls, sendingan automated service message to the contact, based, at least in part, onthe at least one conditional flow statement. The computer systemincludes program instructions to save a contact status for the contact,wherein the contact status indicates whether the contact has beencontacted.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a functional block diagram illustrating a data processingenvironment, generally designated 100, in accordance with an embodimentof the present invention.

FIG. 2 depicts a flowchart of an exemplary process flow, generallydesignated 200, for storing and automated dialing of contacts usingcontrol flow statement logic, in accordance with an embodiment of thepresent invention.

FIG. 3 depicts a flowchart of an exemplary process flow, generallydesignated 300, of a dialing scenario utilizing at least one conditionalflow statement, in accordance with an embodiment of the presentinvention.

FIG. 4 depicts a screenshot of a new contact page on a mobile device(such as the mobile device of FIG. 1), in accordance with an embodimentof the present invention.

FIG. 5 depicts a block diagram depicting components of a data processingsystem (such as the mobile device of FIG. 1), generally designated 500,in accordance with an embodiment of the present invention.

DETAILED DESCRIPTION

Implementation of such embodiments may take a variety of forms, andexemplary implementation details are discussed subsequently withreference to the Figures.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a method or system. Accordingly, aspects ofthe present invention may take the form of an entirely hardwareembodiment, an entirely software embodiment (including firmware,resident software, micro-code, etc.), or an embodiment combiningsoftware and hardware aspects that may all generally be referred toherein as a “circuit,” “module,” or “system.” Furthermore, aspects ofthe present invention may take the form of a computer program productembodied in one or more computer-readable media having computer readableprogram code/instructions embodied thereon.

The present invention will now be described in detail with reference tothe Figures. FIG. 1 provides only an illustration of one implementationand does not imply any limitations with regard to the environments inwhich different embodiments may be implemented. Many modifications tothe depicted environment may be made by those skilled in the art withoutdeparting from the scope of the invention as recited by the claims. FIG.1 illustrates an exemplary data processing environment 100 including anetwork 102, a mobile device 104, and multiple contact devices, such ascontact device 106, contact device 108, and contact device 110.

In the exemplary embodiment, network 102 is the Internet representing aworldwide collection of networks and gateways that use TCP/IP protocolsto communicate with one another. Network 102 may include wire cables,wireless communication links, fiber optic cables, routers, switchesand/or firewalls. Mobile device 104, contact device 106, contact device108, and contact device 110 are interconnected by network 102. Network102 can be any combination of connections and protocols capable ofsupporting communications between mobile device 104, contact device 106,contact device 108, contact device 110, and contacts program 112.Network 102 may also be implemented as a number of different types ofnetworks, such as an intranet, a local area network (LAN), a virtuallocal area network (VLAN), or a wide area network (WAN). FIG. 1 isintended as an example and not as an architectural limitation for thedifferent embodiments.

In the exemplary embodiment, mobile device 104 may be, for example, adesktop computer, a laptop computer, a tablet computer, a personaldigital assistant (PDA), a smart phone, a thin client, or any otherelectronic device or computing system capable of storing contacts,conducting a phone call, or accessing the Internet. In one embodiment,mobile device 102 may be any suitable type of mobile device capable ofrunning mobile applications, including a smart phone, tablet, slate, orany type of device that runs a mobile operating system. Mobile device104 includes a contacts program 112 and a graphical user interface (GUI)114.

In the exemplary embodiment, contacts program 112 is a software-basedprogram configured within a mobile operating system (OS) of a mobiledevice, such as mobile device 104, for storing contacts using controlflow statement logic and initiating automated dialing of stored contactsusing the control flow statement logic. Conditional flow statementsinclude both control statements and logical operators available in mostof computer languages. Control statements include decision-makingstatements (if-then, if-then-else, switch), looping statements (for,while, do-while), and branching statements (break, continue, return)supported by most computer languages (e.g., C, C++, etc.). Logicaloperators include “&&” (Conditional-AND), “II” (Conditional-OR), “?:”(Ternary i.e., shorthand for if-then-else statement), “==” (Equal to),“!=” (Not equal to), “>” (Greater than), and “<” (Less than), etc. Inthe exemplary embodiment, contacts program 112 provides configurablefields on a graphical user interface on a mobile device, such as agraphical user interface (GUI) 114 on mobile device 104, to store phonecontacts using conditional flow statements and initiate automateddialing to a single contact or a group of contacts based, at least inpart, on a configured conditional flow logic evaluation.

In some embodiments, contacts program 112 is configurable to generate aconfigured SMS notification to a contact, based, at least in part, onthe control flow statement logic associated with the contact, andprovides for automated sending of the configured SMS based, at least inpart, on conditional flow logic evaluation. In yet another embodiment,contacts program 112 is configurable to provide an option of rememberingwhich stored contacts have been contacted during an automated callingprocess, such that when the automated calling process is paused,contacts program 112 can resume the automated calling process from aplace when it was paused. In some embodiments, contacts program 112 mayprovide automated voice notification to the caller announcing thecontact name to whom the call is about to be made. In some otherembodiments, contacts program 112 provides a pause control to pause theiteration of conditional flow loop and then to resume it again later. Inyet another embodiment, contacts program 112 provides for automatedentry of a pass code to attend group calls, such as attending a meetingor a conference call, as well as an automated announcement of a user'sname while attending the meeting call.

In one embodiment, contacts program 112 provides color-coding technologyon a recipient's mobile device, where the color-coding is set toindicate whether a phone call from a caller was answered by any of aplurality of contact names under a group contact. For example, a Joereceives a missed call from a contact “Dad” that appears in a greencolor on his mobile device. Although the call was missed by Joe, thegreen color indicates that this call was answered by his sister, Mary,or by his mother, Jennifer, all of whom are members of the group contact“Home”. The technology of the present invention can be implemented at atelecommunication provider end where it determines the call was made toa contact group with a conditional flow statement enabled, and in caseno automated SMS was sent from the calling number, then the missed callentry on the receiver handset will be made to a green-colored entry.

In an alternative embodiment, contacts program 112 may be asoftware-based program, downloaded from a central server (not shown) andinstalled on a mobile device, such as mobile device 104. In yet anotherembodiment, contacts program 112 may be utilized as a software serviceprovided by a third-party service provider (not shown).

In the exemplary embodiment, GUI 114 is a conventional graphical userinterface for displaying stored contacts, options for storing contacts,options for managing stored contacts, and control flow statement logicfields.

In the exemplary embodiment, contact device 106, contact device 108, andcontact device 110 are contacts of mobile device 102 and may be, forexample, a desktop computer, a laptop computer, a tablet computer, apersonal digital assistant (PDA), a smart phone, a thin client, or anyother electronic device or computing system capable of communicatingwith mobile device 104 through network 102. For example, contact device106, contact device 108, and contact device 110 may be a mobile devicecapable of connecting to a network, such as network 102, to conduct aphone call or access the Internet.

In an alternate embodiment, mobile device 104, contact device 106,contact device 108, and contact device 110 may be any wearableelectronic device, including wearable electronic devices affixed toeyeglasses and sunglasses, helmets, wristwatches, clothing, wigs, andthe like, capable of sending, receiving, and processing data. Forexample, mobile device 104, contact device 106, contact device 108, andcontact device 110 may be a wearable electronic device, such as awristwatch, capable of executing an application and initiating aconversation with another electronic device capable of sending andreceiving data, such as mobile device 104 wherein a conversation caninclude, without limitation, a phone conversation, a video conversation,or any other suitable means of communication.

FIG. 2 depicts a flowchart of an exemplary process flow, generallydesignated 200, for storing and automated dialing of contacts usingcontrol flow statement logic, in accordance with an embodiment of thepresent invention.

Contacts program 112 receives a request to add a new contact (202). Inthe exemplary embodiment, contacts program 112 receives a request to adda contact to an existing list of contacts on a mobile device, such asmobile device 104, when a user opens a contact list on the mobile deviceand elects to create a new contact or add a contact or contactinformation to an existing contact. For example, contacts program 112may receive a request to add a contact when a user selects an “add acontact” feature on a mobile device.

In response to receiving a request to add a new contact, contactsprogram 112 displays a new contact page to a user (204). In theexemplary embodiment, contacts program 112 displays a contact page,using a graphical user interface, such as GUI 114, wherein displayingthe contact page includes providing at least one conditional flowstatement field. In the exemplary embodiment, the contact page includesat least one field for entering contact information, configuring controlflow statement logic, configuring automated contacting utilizing controlflow statement logic, and configuring automated short message service(SMS) text messaging utilizing control flow statement logic. Forexample, on a mobile device, such as mobile device 104, contacts program112 may display a new contact page on GUI 114 including a field forentering a contact group name, such as “Home”, a control flow statementlogic “IF” checkbox with at least one field for entering a contact nameand number, a control flow statement logic “FOR” checkbox with a fieldfor entering a value for configuring a number of loop repeats, and acontrol flow statement logic automated SMS test messaging option.

In response to displaying the new contact page, contacts program 112prompts the user to add contact information for the new contact (206).In the exemplary embodiment, contacts program 112 prompts the user toadd contact information for the contact, wherein contact informationincludes at least a contact name (e.g., a group name, an individualname, etc.) and a contact number, such as a telephone number, for thenew contact. In one embodiment, contacts program 112 prompts the user toadd contact information for multiple contacts added under a new contactgroup. For example, when in response to contacts program 112 promptingthe user to add contact information for the new contact the user adds anew contact group name, such as “Home”, “Birthday”, or “Friends”,contacts program 112 prompts the user to add at least one additionalcontact under the new contact group name, and add contact informationfor each of the additional contacts. In one embodiment, contacts program112 may prompt the user to add contact information by highlighting a newcontact name field, designating it as a required field.

Contacts program 112 prompts the user to configure the at least oneconditional flow statement field (208). In the exemplary embodiment,contacts program 112 prompts the user to configure the at least oneconditional flow statement fields, including, without limitation, an“IF”, a “FOR”, an “ELSE-IF”, and an “Automated SMS” conditional flowstatement field, by requiring the user to elect to enable or disable aconditional flow statement field, wherein enabling or disabling theconditional flow statement field can be done by selecting or deselectinga checkbox within the contact page. In one embodiment, where the userenables the at least one conditional flow statement field, such as “IF”,“FOR”, “ELSE IF”, etc., contacts program 112 may prompt the user to addat least two or more additional contacts, provide a value forconfiguring how many times an automated call loop repeats, and provide acustom SMS message to be automatically sent if a condition is met (e.g.,contact did not answer call). In an embodiment where an “IF” conditionalflow statement field is enabled, contacts program 112 prompts the userto add at least two or more additional contacts, such as a first,second, third, and fourth contact that function as “ELSE-IF” conditions(i.e., where a first contact does not answer, the phone is switched off,the phone is busy, or otherwise not reachable, contacts program 112advances through the contacts sequentially, calling the second contact,the third contact, etc.). In the embodiment, where adding the additionalcontacts, contacts program 112 prompts the user to add additionalcontact information, such as a name and at least one contact number, foreach of the additional contacts. In an embodiment where a “FOR”conditional flow statement field is enabled, contacts program 112prompts the user to specify a value, such as 1 or 2, for how many timesan automated call loop (i.e., a call to each of the contacts listedunder a contact group) repeats in an attempt to reach each of thecontacts. In yet another embodiment, where an “Automated SMS”conditional flow statement field is enabled, contacts program 112prompts the user to specify a text message, which contacts program 112sends automatically upon completion of a call loop configured byenabling a “FOR” conditional flow statement field.

In an example, a group contact “Home” has three contact names, such asGeorge, Mary, and Jennifer, with each contact having a different contactnumber. Where contacts program 112 enables an “IF” conditional statementbased on a user configuration, contacts program 112 adds an “ELSE-IF”conditional statement for each contact under the group contact followinga first contact. Contacts program 112 may enable an additionalconditional flow statement “FOR” having a value equal to two, indicatesthat calling the IF-ELSE-IF loop repeats for two iterations. Finally,contacts program 112 may enable an automated SMS field with a messagecontaining the text, “Please call me back”, indicating that afteriterating the call loop twice, and in response to none of the contactshaving answered the call, then contacts program 112 sends an automatedSMS to all contact members under the group contact.

In response to completing configuration, contacts program 112 saves thenew contact (210). In the exemplary embodiment, contacts program 112saves the contact page within an existing contacts list on a mobiledevice, such as mobile device 104, wherein saving the contact pageincludes programming each of the configured conditional flow statementfields on the phones operating system in such a way that the mobiledevice understands that each of the configured conditional flowstatement fields apply to the contact page when dialed. In anotherembodiment, contacts program 112 saves the contact page to a contactslist provided within contacts program 112, wherein each of theconfigured conditional flow statement fields are pre-programmed intocontacts program 112.

FIG. 3 depicts a flowchart of an exemplary process flow, generallydesignated 300, of a dialing scenario utilizing at least one conditionalflow statement, in accordance with an embodiment of the presentinvention.

In response to receiving a request to call a contact, contacts program112 initiates an automated call to a first number for the contact (302).In the exemplary embodiment, contacts program 112 initiates a call to afirst number for the contact when a user attempts to dial the contact byselecting the contact from a contacts list on a mobile device, such asmobile device 104. Contacts program 112 initiates the automated call tothe first number listed for the contact by dialing the first contactnumber for the contact in an attempt to reach the contact on, forexample, contact device 106, 108, and 110. In one embodiment, thecontact can be an individual contact with one or more contact numbersassociated with the contact. In another embodiment, the contact can be agroup of two or more contacts, with each contact having one or morecontact numbers associated with each contact.

Contacts program 112 determines at least one conditional flow statementfield configured to the contact (304). In the exemplary embodiment,contacts program 112 determines at least one conditional flow statementfield configured to the contact by referencing a saved contact page forthe contact to determine the at least one conditional flow statementfield enabled for the contact.

Contacts program 112 applies the at least one conditional flow statementfield to the automated call to the contact (306). In the exemplaryembodiment, contacts program 112 applies the at least one conditionalflow statement field to the automated call by proceeding to call thecontact based, at least in part, on the at least one conditional flowstatement field. For example, where the contact is a group contact, suchas “Home”, including four contacts, such as a first contact, a secondcontact, a third contact, and so on, contacts program 112 may apply anenabled “IF” conditional flow statement field to a call to the groupcontact such that where the first contact does not answer, automaticallycalling the second contact, and where the second contact does notanswer, automatically calling the third contact, and so on. In anotherexample, where the contact is an individual contact having multiplecontact numbers listed in a contact page, such as a work telephonenumber, a home telephone number, and a mobile phone number, contactsprogram 112 may apply an enabled “IF” conditional flow statement fieldto a call to the contact such that where the contact does not answer ata first contact number, automatically calling the second contact number,and where the contact does not answer the second contact number,automatically calling the third contact number, and so on. In anotherexample, in the case of a reserved contact group “Birthday” having acontact list with entries GUEST1, GUEST2, GUEST3, and so on. GUEST1,GUEST2, and GUEST3 contacts will be treated as sub-group contact thatmay have an individual contact number or multiple contact numbersassociated with a group. Within the group, “IF-ELSE-IF” conditional flowstatement logic will be used internally, and a conditional flowstatement ELSE-IF will be enabled for each remaining contact in thegroup after a first contact. Where the first contact number, such asGUEST1, does not respond to a user's call, then contacts program 112automatically dials to the next available number under this group. Apause button may be provided while initiating a call to the group,wherein pressing the pause button suspends further calls to the group,and calling can be resumed at a later time by pressing a resume button.A “FOR” conditional flow statement field may be available for the userto configure a number value, the number value indicating a number oftimes to repeat a call loop. During each call loop, contacts program 112may mark one or more contacts who answered the call as invited, andmanage two lists, an invited list and a not invited list. Contactsprogram 112 may move an invited contact to the invited list, and a noresponse contact to the not invited list. After completion of traversingthrough all loop iterations, contacts program 112 may send out anautomated SMS, such as “I have my birthday party at my home, please jointhis celebration” to each contact included in the not invited list.After sending the automated SMS, contacts program 112 may erase allinformation related to this iteration of call made to the group.

Contacts program 112 saves a contact status for the contact (308). Inthe exemplary embodiment, contacts program 112 saves a contact statusfor the contact, wherein the contact status indicates whether thecontact has been contacted (i.e., the contact answered the call, thecontact returned the call during automated calling, etc.) or the contacthas not been contacted (i.e., the contact did not answer the call, thecontact was unreachable, the call went to voicemail, etc.). For example,contacts program 112 may mark a contact as “Contacted” to indicate thatthe contact was successfully reached, or mark a contact as “NotContacted” to indicate that the contact was unsuccessfully reached. Inone embodiment, contacts program 112 may mark one or more contactslisted in a group of contacts to save which contacts were reached (i.e.,a caller spoke with one or more contacts), and which were not (i.e., acaller was prompted to leave a message), so that during a repeat of thecall loop, previously reached contacts are not called again. In yetanother embodiment, contacts program 112 may mark one or more contactnumbers for an individual contact, such that if the contact was reachedon one of the contact numbers, automated contacting for the contactends. In yet another embodiment, contacts program 112 may mark one ormore sub-groups of contacts within a contact group, such that where anindividual contact within a sub-group is reached, contacts program 112marks the entire sub-group as contacted (i.e., relying on an inferencethat if one member of a family is reached, the entire family has beenreached, as any message would be conveyed to the rest of the familythrough the contacted member).

Contacts program 112 determines whether the contact answered (310). Inthe exemplary embodiment, contacts program 112 determines whether thecontact answered by determining the call was connected. If contactsprogram 112 determines a connection is established between a user'smobile device, such as mobile device 104, and the contact's device, suchas contact device 106, 108, and 110, then contacts program 112determines the contact answered the call and automated contacting forthe contact ends (YES branch, 310). If contacts program 112 determines aconnection is not established between a user's mobile device, such asmobile device 104, and the contact's device, such as contact device 106,108, and 110, then contacts program 112 determines the contact has notanswered (e.g., not reachable, busy, no answer, voicemail, etc.) (NObranch, 310).

In response to determining the contact has not answered (NO branch,310), contacts program 112 repeats the call a pre-configured number oftimes (312). In the exemplary embodiment, contacts program 112 repeats acall loop for the contact based, at least in part, on conditional flowstatement fields configured to the contact page. In one embodiment,where an enabled “FOR” conditional flow statement field indicates avalue of “2”, contacts program 112 repeats the call loop (e.g., callingeach number listed for each contact) two more times, based, at least inpart, on the enabled “IF” conditional flow statement field, or until thecontact is reached.

Contacts program 112 determines whether the contact answered during anyrepeat calls (314). In the exemplary embodiment, contacts program 112determines whether the contact answered during any repeat calls bydetermining the call was connected. If contacts program 112 determines aconnection is established between a user's mobile device, such as mobiledevice 104, and the contact's device, such as contact devices 106, 108,and 110, then contacts program 112 determines the contact answered thecall and automated contacting for the contact ends (YES branch, 314). Ifcontacts program 112 determines a connection is not established betweena user's mobile device, such as mobile device 104, and the contact'sdevice, such as contact device 106, 108, and 110 then contacts program112 determines the contact has not answered (e.g., not reachable, busy,no answer, voicemail, etc.) (NO branch, 314).

In response to determining the contact has not answered during anyrepeat calls (NO branch 314), contacts program 112 sends an automatedmessage to the contact (316). In the exemplary embodiment, contactsprogram 112 references an enabled “Automated SMS” conditional flowstatement field configured to the contact page and sends thepre-configured text message to any contacts and contact numbers savedwith a contact status indicating the contact was not reached. Forexample, in the case where a “FOR” conditional flow statement field isenabled, after contacts program 112 loops through dialing iterations fora pre-configured number of times, contacts program 112 automaticallysends a text message, such as “I am trying to contact you”, or “You miss100% of the shots you don't take, call me back”.

FIG. 4 depicts a screenshot of a new contact page, generally designated400, on a mobile device display, such as on mobile device 104, inaccordance with an embodiment of the present invention. New contact page400 includes one or more fields to add new contact information, such asa first name and a last name. New contact page 400 includes an option todefine a contact as an individual contact or as a group contact, whereasin the later case, new contact page 400 contains one or more additionalfields for multiple sub-contact names with numbers associated with thosesub-contact names. New contact page 400 includes a conditional flowstatement selection field for selecting a conditional flow statement,including, without limitation, “IF,” “FOR,” “SWITCH,” and so on from adrop-down list. Based on a conditional flow statement selection,contacts program 112 provides a user with one or more additional pop-upfields related to the selected conditional flow statement. For example,when a SWITCH conditional statement is selected, contacts program 112provides a “NAME TO BE ANNOUNCED WHILE JOINING THE MEETING” field for auser to further configure. New contact page 400 includes an option toadd a contact to a reserved group, such as “BIRTHDAY” and “MARRIAGE”. Areserved group name, such as birthday and marriage, for example, areinternally programmed in such a way that when a user dials to thebirthday group, contacts program 112 internally handles calling to eachcontact number listed under the birthday group with internally enabledconditional flow statements.

FIG. 5 depicts a block diagram of components of a data processing system(such as mobile device 104), generally designated 500, in accordancewith an illustrative embodiment of the present invention. It should beappreciated that FIG. 5 provides only an illustration of oneimplementation and does not imply any limitations with regard to theenvironments in that different embodiments may be implemented. Manymodifications to the depicted environment may be made.

In the illustrative embodiment, mobile device 104 in data processingenvironment 100 is shown in the form of a general-purpose computingdevice. The components of computer system 510 may include, but are notlimited to, one or more processors or processing unit 514, memory 524,and bus 516 that couples various system components including memory 524to processing unit 514.

Bus 516 represents one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. By way of example, and notlimitation, such architectures include Industry Standard Architecture(ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA)bus, Video Electronics Standards Association (VESA) local bus, andPeripheral Component Interconnect (PCI) bus.

Computer system 510 typically includes a variety of computer systemreadable media. Such media may be any available media that is accessibleby computer system 510, and it includes both volatile and non-volatilemedia, removable and non-removable media.

Memory 524 can include computer system readable media in the form ofvolatile memory, such as random access memory (RAM) 526 and/or cachememory 528. Computer system 510 may further include otherremovable/non-removable, volatile/non-volatile computer system storagemedia. By way of example only, storage system 530 can be provided forreading from and writing to a non-removable, non-volatile magnetic media(not shown and typically called a “hard drive”). Although not shown, amagnetic disk drive for reading from and writing to a removable,non-volatile magnetic disk (e.g., a “floppy disk”), and an optical diskdrive for reading from or writing to a removable, non-volatile opticaldisk such as a CD-ROM, DVD-ROM, or other optical media can be provided.In such instances, each can be connected to bus 516 by one or more datamedia interfaces. As will be further depicted and described below,memory 524 may include at least one computer program product having aset (e.g., at least one) of program modules that are configured to carryout the functions of embodiments of the invention.

Program/utility 532, having one or more sets of program modules 534, maybe stored in memory 524 by way of example, and not limitation, as wellas an operating system, one or more application programs, other programmodules, and program data. Each of the operating systems, one or moreapplication programs, other program modules, and program data, or somecombination thereof, may include an implementation of a networkingenvironment. Program modules 534 generally carry out the functionsand/or methodologies of embodiments of the invention as describedherein. Computer system 510 may also communicate with one or moreexternal device(s) 512 such as a keyboard, a pointing device, a display522, etc., or one or more devices that enable a user to interact withcomputer system 510 and any devices (e.g., network card, modem, etc.)that enable computer system 510 to communicate with one or more othercomputing devices. Such communication can occur via Input/Output (I/O)interface(s) 520. Still yet, computer system 510 can communicate withone or more networks such as a local area network (LAN), a general widearea network (WAN), and/or a public network (e.g., the Internet) vianetwork adapter 518. As depicted, network adapter 518 communicates withthe other components of computer system 510 via bus 516. It should beunderstood that although not shown, other hardware and softwarecomponents, such as microcode, device drivers, redundant processingunits, external disk drive arrays, RAID systems, tape drives, and dataarchival storage systems may be used in conjunction with computer system510.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, a special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the invention.The terminology used herein was chosen to best explain the principles ofthe embodiment, the practical application or technical improvement overtechnologies found in the marketplace, or to enable others of ordinaryskill in the art to understand the embodiments disclosed herein.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Itshould be appreciated that any particular nomenclature herein is usedmerely for convenience and thus, the invention should not be limited touse solely in any specific function identified and/or implied by suchnomenclature. Furthermore, as used herein, the singular forms of “a”,“an”, and “the” are intended to include the plural forms as well, unlessthe context clearly indicates otherwise.

1. A computer system for contacts management and automated calling, thecomputer system comprising: one or more computer processors; one or morecomputer readable storage devices; and program instructions stored on atleast one of the one or more computer readable storage devices forexecution by at least one of the one or more computer processors, theprogram instructions comprising: program instructions to display acontact page for adding a contact, wherein the contact page includes atleast one conditional flow statement field; program instructions toprovide: a field for entering contact information, a field forconfiguring conditional flow statement logic, a field for configuringautomated contacting utilizing conditional flow statement logic, and afield for configuring automated short message service (SMS) textmessaging utilizing conditional flow statement logic; programinstructions to prompt to configure the at least one conditional flowstatement field, wherein the at least one conditional flow statementfield includes at least one control statement and at least one logicaloperator, the at least one control statement includes a decision-makingstatement, a looping statement, and a branching statement, and the atleast one logical operator includes a symbol representing conditionalflow logic; responsive to configuring the at least one conditional flowstatement field, program instructions to save the contact page based onthe at least one control flow statement field; program instructions todetermine the at least one conditional flow statement field configuredto the contact by referencing a saved contact page for the contact;program instructions to apply the at least one conditional flowstatement field to the automated call to the contact; programinstructions to initiate an automated call to the contact based, on theat least one conditional flow statement field configured to the contact,wherein initiating the automated call includes providing a pause controlto suspend the at least one conditional flow statement field and pausethe automated call; responsive to the contact not answering the call,program instructions to determine the contact did not answer the call,wherein determining the contact did not answer the call, furthercomprises repeating a call loop a pre-configured number of times, based,at least in part, on the at least one conditional flow statement;program instructions to determine whether the contact answered duringany repeat calls during the call loop, wherein determining whether thecontact answered during any repeat calls during the call loop furthercomprises, responsive to determining the contact did not answer duringany repeat calls, sending an automated service message to the contact,based, at least in part, on the at least one conditional flow statement;and program instructions to save a contact status for the contact,wherein the contact status indicates whether the contact has beencontacted.